package com.kc.business.service;

import com.kc.business.domain.BizMenu;
import com.kc.business.domain.vo.BizMenuVo;
import com.kc.common.core.domain.AjaxResult;

import java.util.List;
import java.util.Map;

/**
 * FileName: IBizMenuService
 * Author:   TP
 * Date:     2020-10-30 08:56
 * Description: 菜单服务
 */
public interface IBizMenuService {

    /**
     * 查询菜单列表
     *
     * @param vo 查询条件VO
     * @return 菜单列表
     */
    List<BizMenu> getList(BizMenuVo vo);

    /**
     * 根据菜单ID查询菜单信息
     *
     * @param id 主键ID
     * @return 菜单信息
     */
    BizMenu getById(Integer id);

    /**
     * 查询可用菜单列表（树形），不包含通用菜单
     *
     * @param roleId 角色ID
     * @return 可用菜单列表
     */
    Map<String, Object> getActivePersonalTreeMenus(Integer roleId);

    /**
     * 根据菜单名称或App标识ID查询菜单信息
     *
     * @param menuName  菜单名称
     * @param appFlagId App标识ID
     * @return 菜单信息
     */
    BizMenu getByMenuNameOrAppFlagId(String menuName, String appFlagId);

    /**
     * 新增菜单
     *
     * @param bizMenu 菜单
     * @return 影响行数
     */
    int add(BizMenu bizMenu);

    /**
     * 根据App应用标识查询
     *
     * @param appFlagId App应用标识
     * @return 菜单信息
     */
    BizMenu getByAppFlagId(String appFlagId);

    /**
     * 根据菜单名称获取菜单信息
     *
     * @param menuName 菜单名称
     * @return 菜单信息
     */
    BizMenu getByMenuName(String menuName);

    /**
     * 更新
     *
     * @param bizMenu 菜单信息
     * @return 影响行数
     */
    int updateById(BizMenu bizMenu);

    /**
     * 删除菜单
     *
     * @param id       菜单ID
     * @param username 修改者
     * @return AjaxResult
     */
    AjaxResult deleteById(Integer id, String username);
}
